/*
 * Copyright (C) 2012 POAS.VSTU
 */
package ui;

import model.CardStack;
import model.Card;

import java.awt.Point;
import java.util.List;
import model.CardPile;

/**
 * Колода карт как графический элемент. 
 * На самом деле она не имеет своего представления - это участок игровой панели,
 * занятый картами
 */
public class UICardStack extends UICardPile {
    
    int mAmountCards = 0;
    
    /**
     * Конструктор.
     * @param cardStack модель колоды карт.
     */
    public UICardStack(CardStack cardStack, UIGamePanel mPanel) {
        super(cardStack, mPanel);
        mAmountCards = mModel.size();
        turnFaceDown();
        
        // Придадм "объём" колоде
        UICard uiCard;
        int c = 0;
        for(Card card: cardStack) {
            uiCard = mPanel.getUICard(card);
            uiCard.setLocation(uiCard.getLocation().x + c/3, uiCard.getLocation().y + c/3);
            c++;
        }
    }
    
    /** Настроить расположение карт в колоде. */
    @Override
    protected void adjustCardsLocation() {
        // Все карты располагаются одна над другой
	
        int zOrder = mModel.size()-1;
            // z-координата карты, первая карта - самая нижняя, т.е. с самой большой z-координатой;
        // последняя карта - самая верхняя, т.е. с z-координата = 0

        for (Card card: mModel) {
                UICard uiCard = mPanel.getUICard(card);

                Point p = new Point(0, 0);
                setCardLocation(uiCard, p);
                setCardZOrder(uiCard, zOrder);
                zOrder--;
        }
    }
    
    
    @Override
    public void dragIn(CardPile cards) {
        UICard uiCard;
        for(Card card: cards) {
            uiCard = mPanel.getUICard(card);
            uiCard.actionSetZOrder(0, 0);
        }
    }
    
    @Override
    public void push(CardPile cards) {
        UICard uiCard;
        for(Card card: cards) {
            uiCard = mPanel.getUICard(card);
            uiCard.actionMoveTo(new Point(getLocation().x + mAmountCards/3, getLocation().y + mAmountCards/3), MovementSpeed.NORMAL, 100);
            uiCard.actionTurnFaceDown(0);
            uiCard.actionSetOrientation(getOrientation(), 0);
            mAmountCards++;
        }
    }
    
    public void pop(CardPile cards) {
        UICard uiCard;
        for(Card card: cards) {
            mAmountCards--;
            uiCard = mPanel.getUICard(card);
            uiCard.actionSetZOrder(0, 100);
            uiCard.actionSetOrientation(Orientation.NORMAL, 0);
        }
    }

}